package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.entidades.Endereco;
import br.com.vendor_engine.entidades.Pessoa;
import br.com.vendor_engine.interfaces.InterfacePessoa;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.List;
import org.hibernate.Session;

public class RepositorioPessoa implements InterfacePessoa {
    
    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    private Pessoa p1 = new Pessoa();
    
    @Override
    public void salvarPessoa(String nomePessoa, String rgPessoa, String cpfPessoa, 
            String emailPessoa, String email2pessoa, String telefonePessoa, 
            String telefone2pessoa, Endereco endereco){        
        
        p1.setIdPessoa(0);
        p1.setNomePessoa(nomePessoa);
        p1.setRgPessoa(rgPessoa);
        p1.setCpfPessoa(cpfPessoa);
        p1.setEmailPessoa(emailPessoa);
        p1.setEmail2pessoa(email2pessoa);
        p1.setTelefonePessoa(telefonePessoa);
        p1.setTelefone2pessoa(telefone2pessoa);
        p1.setEndereco(endereco);
        
        s.beginTransaction();
        s.save(p1);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        } if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }
    
    @Override
    public Pessoa getPessoa(){
        return p1;
    }

    @Override
    public void alterarPessoa(int idPessoa, String nomePessoa, String rgPessoa, 
    String cpfPessoa, String emailPessoa, String email2pessoa, String telefonePessoa, 
    String telefone2pessoa, Endereco endereco) {
        
        p1.setIdPessoa(idPessoa);
        p1.setNomePessoa(nomePessoa);
        p1.setRgPessoa(rgPessoa);
        p1.setCpfPessoa(cpfPessoa);
        p1.setEmailPessoa(emailPessoa);
        p1.setEmail2pessoa(email2pessoa);
        p1.setTelefonePessoa(telefonePessoa);
        p1.setTelefone2pessoa(telefone2pessoa);
        p1.setEndereco(endereco);
        
        s.beginTransaction();
        s.save(p1);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        } if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }
        
    }

    @Override
    public List<Pessoa> pegarTodosPessoa() {
        s.beginTransaction();
        List<Pessoa> list = (List<Pessoa>) s.createQuery("from Pessoa").list();
        return list;       
    }
    
}
